package com.tongzhan.util;

import com.alibaba.fastjson.JSON;

import java.io.Serializable;


/**
 * 页面返回数据
 *
 * @author mintonzhang 2018年8月1日
 */
public class Result implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = -219504552619170768L;

    /**
     * 操作成功
     */
    public final static String SUCCESS = "200";

    /**
     * 操作失败
     */
    public final static String FAIL = "201";

    /**
     * 缺少参数
     */
    public final static String MISS_PARAM = "202";

    /**
     * 缺少参数
     */
    public final static String TIME_OUT = "203";

    /**
     * 异常
     */
    public final static String EXCEPTION = "404";
    public final static String RE_NAME = "205";
    public final static  String RE_LOGIN="300";
    public final static String EXEXCEPTION = "500";
    public final static String KEYWORDLIMIT = "9999";//敏感词汇异常
    private String code;

    private String message;

    private Object data;

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public static Result getExErrorResult(String... errorMessage) {
        Result r = new Result();
        r.setCode(EXEXCEPTION);
        r.setMessage("请填写完整的信息");
        if (errorMessage != null && errorMessage.length > 0) {
            r.setMessage(errorMessage[0]);
        }
        return r;
    }
    /**
     * 错误类型
     *
     * @return
     * @date 2018年6月25日
     * 
     */
    public static Result getErrorResult(String... errorMessage) {
        Result r = new Result();
        r.setCode(EXCEPTION);
        r.setMessage("服务器异常");
        if (errorMessage != null && errorMessage.length > 0) {
            r.setMessage(errorMessage[0]);
        }
        return r;
    }

    /**
     * 成功
     *
     * @return
     * @date 2018年6月25日
     * 
     */
    public static Result getFailResult(String... failMessage) {
        Result r = new Result();
        r.setCode(FAIL);
        r.setMessage("操作失败");
        if (failMessage != null && failMessage.length > 0) {
            r.setMessage(failMessage[0]);
        }
        return r;
    }

    /**
     * 成功
     *
     * @return
     * @date 2018年6月25日
     * 
     */
    public static Result getSuccessResult(Object... result) {
        Result r = new Result();
        r.setCode(SUCCESS);
        r.setMessage("操作成功");
        if (result != null && result.length > 0) {
            r.setData(result[0]);
        }
        return r;
    }

    /**
     * 成功
     *
     * @return
     * @date 2018年6月25日
     * 
     */
    public static Result getSuccessResult(String... successMessgae) {
        Result r = new Result();
        r.setCode(SUCCESS);
        r.setMessage("请求成功");
        if (successMessgae != null && successMessgae.length > 0) {
            r.setMessage(successMessgae[0]);
        }
        return r;
    }

    /**
     * 成功
     *
     * @return
     * @date 2018年6月25日
     * 
     */
    public static Result getSuccessResult(String successMessgae, Object result) {
        Result r = new Result();
        r.setCode(SUCCESS);
        r.setMessage(successMessgae);
        r.setData(result);
        return r;
    }

    /**
     * 缺少参数
     *
     * @return
     * @date 2018年6月25日
     * 
     */
    public static Result getMissParamResult(String... errorMessage) {
        Result r = new Result();
        r.setCode(MISS_PARAM);
        r.setMessage("缺少必要参数");
        if (errorMessage != null && errorMessage.length > 0) {
            r.setMessage(errorMessage[0]);
        }
        return r;
    }
    /**
     * 限流
     *
     * @return
     * @date 2018年6月25日
     */
    public static Result getLimitResult(String... errorMessage) {
        Result r = new Result();
        r.setCode(TIME_OUT);
        r.setMessage("请稍等片刻");
        if (errorMessage != null && errorMessage.length > 0) {
            r.setMessage(errorMessage[0]);
        }
        return r;
    }
    public static Result getKeywordLimitResult(String... errorMessage) {
        Result r = new Result();
        r.setCode(KEYWORDLIMIT);
        r.setMessage("参数包含敏感词汇");
        if (errorMessage != null && errorMessage.length > 0) {
            r.setMessage(errorMessage[0]);
        }
        return r;
    }
    public Result(String code, String message) {
        this.code = code;
        this.message = message;
    }
    public static Result getnameErrorResult(String... errorMessage) {
        Result r = new Result();
        r.setCode(RE_NAME);
        r.setMessage("演练方案名称不能重复");
        if (errorMessage != null && errorMessage.length > 0) {
            r.setMessage(errorMessage[0]);
        }
        return r;
    }
    public Result() {
    }

    public Result(String code, String message, Object result) {
        this.code = code;
        this.message = message;
        this.data = result;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}


